package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;


@Controller
@RequestMapping("/company")
public class CompanyController {
    @Autowired
    private CompanyService companyService;

    /**
     * 定义三大要素：方法接口
     *   1）方法的访问路径
     *   2）方法的参数
     *   3）方法的返回内容： 页面地址/对象
     */


    /**
     * 分页查询所有企业
     * 1）方法的访问路径：http://localhost:8080/company/list.do
     * 2）方法的参数：无
     * 3）方法的返回内容： /WEB-INF/pages/company/company-list.jsp
     * @RequestParam(defaultValue = "1")
     * @RequestParam(defaultValue = "5")
     */
    @RequestMapping("/list")
    public String list(@RequestParam(defaultValue = "1")int pageNum,
                       @RequestParam(defaultValue = "5") int pageSize,
                       HttpServletRequest request) {
        //1.调用业务获取数据
        PageInfo pageInfo = companyService.findByPage(pageNum,pageSize);

        //2.存入request域中，提供给页面显示
        request.setAttribute("pageInfo", pageInfo);

        return "company/company-list";
    }


    /**
     * 添加企业页面
     * 1）方法的访问路径：http://localhost:8080/company/toAdd.do
     * 2）方法的参数：无
     * 3）方法的返回内容：company-add.jsp
     */
    @RequestMapping("/toAdd")
    public String toAdd() {
        return "company/company-add";
    }

    /**
     * 修改企业（根据id查企业）
     * 1）方法的访问路径：// http://localhost:8080/company/toUpdate.do?
     * 2）方法的参数：id=02e1da04-43f8-42e1-a4c2-66e162c6f4a5
     * 3）方法的返回内容：company/company-update.jsp
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id, HttpServletRequest request) {
        Company company = companyService.findById(id);
        request.setAttribute("company", company);
        return "company/company-update";
    }

    /**
     * 添加修改企业
     * 1）方法的访问路径：http://localhost:8080/company/edit.do
     * 2）方法的参数：有
     * 3）方法的返回内容：重定向回企业列表
     */
    @RequestMapping("/edit")
    public String edit(Company company) {

        //1.判断如果不存在ID，代表添加
        if (company.getId() == null || company.getId().equals("")) {
            //alt+enter
            companyService.save(company);
        } else {
            //2.判断如果存在ID，代表修改
            companyService.update(company);
        }

        return "redirect:/company/list.do";
    }

    /**
     * 删除企业
     * 1）方法的访问路径： http://localhost:8080/company/delete.do?
     * 2）方法的参数：id=1
     * 3）方法的返回内容：重定向回企业列表
     */
    @RequestMapping("/delete")
    public String deleteById(String id) {
        companyService.deleteById(id);


        return "redirect:/company/list.do";
    }
}
